Option Strict On
Option Explicit On

'Copyright (c) 2007-2010, William Severance, Jr., WESNet Designs
'All rights reserved.

'Redistribution and use in source and binary forms, with or without modification, are permitted
'provided that the following conditions are met:

'Redistributions of source code must retain the above copyright notice, this list of conditions
'and the following disclaimer.

'Redistributions in binary form must reproduce the above copyright notice, this list of conditions
'and the following disclaimer in the documentation and/or other materials provided with the distribution.

'Neither the name of William Severance, Jr. or WESNet Designs may be used to endorse or promote
'products derived from this software without specific prior written permission.

'Disclaimer: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS
'            OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
'            AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER BE LIABLE
'            FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
'            LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
'            INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
'            OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
'            IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

'Although I will try to answer questions regarding the installation and use of this software when
'such questions are submitted via e-mail to the below address, no promise of further
'support or enhancement is made nor should be assumed.

'Developer Contact Information:
'     William Severance, Jr.
'     WESNet Designs
'     679 Upper Ridge Road
'     Bridgton, ME 04009
'     Phone: 207-647-9375
'     E-Mail: bill@wesnetdesigns.com
'     Website: www.wesnetdesigns.com

Imports DotNetNuke.Services.Exceptions


Namespace WESNet.DNN.Modules.EPrayer
    Partial Class ModerateEPrayer
        Inherits WESNet.DNN.Modules.EPrayer.EPrayerModuleBase


        Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

            Try
                ' Only logged in users who are administrators or assigned moderators for this EPrayer module can moderate
                If Not CanModerate() Then
                    Response.Redirect(AccessDeniedURL("User is neither an administrator or moderator of this EPrayer module"), True)
                End If

                If Not Page.IsPostBack Then
                    Utilities.LocalizeGridView(gvPostsToModerate, LocalResourceFile)
                    GetPostsToModerate()
                End If
            Catch exc As Exception
                ProcessModuleLoadException(Me, exc)
            End Try

        End Sub

        Private Sub GetPostsToModerate()
            Dim epc As New EPrayerController
            With gvPostsToModerate
                .DataSource = epc.GetPostsToModerate(ModuleId)
                .EmptyDataText = Localize("NoPostsToModerate")
                .DataBind()
            End With
        End Sub

        Protected Sub gvPostsToModerate_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvPostsToModerate.RowCommand
            Dim mm As MailManager = Nothing
            Try
                PostID = Convert.ToInt32(e.CommandArgument)
                If PostID <> -1 Then
                    Dim epc As New EPrayerController
                    Select Case e.CommandName
                        Case "Approve"
                            epc.ModerateApprovePost(PostID, UserId)
                            mm = New MailManager(Enums.PostActions.Undetermined, PostID, Enums.ModerationActions.Approve)
                            MyConfiguration.ReloadStats()
                        Case "Reject"
                            mm = New MailManager(Enums.PostActions.Undetermined, PostID, Enums.ModerationActions.Reject)
                            epc.ModerateRejectPost(PostID, UserId)
                            MyConfiguration.ReloadStats()
                    End Select
                    If Not mm Is Nothing Then mm.SendMail()
                    GetPostsToModerate() 'Rebind the GridView to refreshed data
                End If
            Catch exc As Exception
                ProcessModuleLoadException(Me, exc)
            End Try

        End Sub

        Protected Sub cmdCancel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdCancel.Click
            Response.Redirect(ReturnUrl, True)
        End Sub
    End Class
End Namespace
